package com.bonshotels.DomainLayer.DomainModel;

import java.io.Serializable;

/**
	 * Classe CategoriaHotel.
	 *
	 * Aquesta classe serveix per guardar les categories a les que pertanyen 
	 * els diferents hotels, de les quals coneixem el seu nom.
	 * 
	 * Com que utilitzem el framework de persistencia
	 * Hibernate i aquest utilitza reflexio per fer la seva feina les nostres classes han d'acomplir una
	 * serie de propietats les classes han de ser publiques, han de tenir un constructor public buit
 	 * han d'implementar Serializable, i han de tenir substituits (override) els
	 * metodes equals() i hashCode() per que identifiquin les classes a partir de la seva clau natural.
	 *  
	 * @author: Ana Rebollo Pin
	 */

public class CategoriaHotel implements Serializable {
	
	/** Identificador de versio de la classe, es un requisit de Serializable per distingir les diverses
	 * implementacions d'una classe. */
	
	private static final long serialVersionUID = 2008456856976913234L;
	/** nom de la categoria del hotel. */
	private String nom;
	
	/**
	 * Obte el serialversionuid.
	 *
	 * @return the serialVersionUID
	 */
	public static long getSerialversionuid() {
			return serialVersionUID;
		}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((nom == null) ? 0 : nom.hashCode());
		return result;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		CategoriaHotel other = (CategoriaHotel) obj;
		if (nom == null) {
			if (other.nom != null)
				return false;
		} else if (!nom.equals(other.nom))
			return false;
		return true;
	}

	/**
     * Obte el nom de la categoria de l'hotel.
     * @return el nom de la categoria de l'hotel. 
     */
	public String obteNom() {
		return nom;
	}

	/**
	 * retorna el nom de la categoria
	 *
	 * @return nom de la categoria
	 */
	public String getNom() {
		return nom;
	}

	/**
	 * permet modificar el nom de la categoria per el que rep com ha parametre
	 * @param nom per el que sustituim el valor de la dataInici anterior de la classe
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}
}
